home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TeX 1995 July
/
TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO
/
dviware
/
dvidis
/
vaxinate.for
< prev
Wrap
Text File
|
1990-10-01
|
2KB
|
88 lines
PROGRAM DVIDIS_VAXINATE
IMPLICIT INTEGER (A-Z)
C --- this program converts a DCL-like command to a horrid un*xy command line
C --- and exits with LIB$DO_COMMAND to execute this DVIDIS command.
CHARACTER*132 COMMAND, FILENM, PAGES
CHARACTER*10 LEFT, UPPER, COMPRAT, PAPER*16
EXTERNAL CLI$_ABSENT, CLI$_PRESENT, CLI$_NEGATED
ISTAT = CLI$GET_VALUE('P1', FILENM, LFILENM)
IF( .NOT.ISTAT) CALL EXIT(ISTAT)
COMMAND = FILENM
ISTAT = CLI$GET_VALUE('PAPER', PAPER, LPAPER)
IF( ISTAT) COMMAND = '-s '//PAPER(:LPAPER)//' '//COMMAND
ISTAT = CLI$PRESENT('COMPRESS')
IF(ISTAT .EQ. %LOC(CLI$_NEGATED) ) THEN
COMMAND = '-c ' // COMMAND
ELSE IF ( ISTAT .EQ. %LOC(CLI$_PRESENT) ) THEN
COMMAND = '-w ' // COMMAND
ENDIF
IF ( CLI$PRESENT('VERBOSE')) COMMAND = '-verbose '//COMMAND
IF ( CLI$PRESENT('DEBUG' )) COMMAND = '-d '//COMMAND
IF ( CLI$PRESENT('SMALL_FONTS')) COMMAND = '-m '//COMMAND
10 ISTAT = CLI$GET_VALUE('PAGES', PAGES, LPAG)
IF( .NOT.ISTAT) GOTO 20
N = INDEX( PAGES, ':')
IF( N .EQ. 1) THEN
N = 2
PAGES = '1'//PAGES
LPAG = LPAG + 1
ELSE IF (N .EQ. LPAG) THEN
PAGES(LPAG+1:) = '99999' ! n: means to end of file
LPAG = LPAG + 5
ENDIF
IF( N .NE. 0) THEN
PAGES(N:N) = ' '
COMMAND = '-p '//PAGES(:LPAG)//' '//COMMAND
ELSE
COMMAND = '-p '//PAGES(:LPAG)//' '//PAGES(:LPAG)//' '//COMMAND
ENDIF
GOTO 10
20 CONTINUE
ISTAT = CLI$GET_VALUE('UPPER_MARGIN', UPPER, LUP)
IF( ISTAT) THEN
CALL FRAC_TO_MILLIS( UPPER, LUP)
COMMAND = '-v '//UPPER(:LUP)//' '//COMMAND
ENDIF
ISTAT = CLI$GET_VALUE('LEFT_MARGIN', LEFT, LLFT)
IF( ISTAT) THEN
CALL FRAC_TO_MILLIS( LEFT, LLFT)
COMMAND = '-h '//LEFT(:LLFT)//' '//COMMAND
ENDIF
COMMAND = 'DODVIDIS '//COMMAND
CALL LIB$DO_COMMAND( COMMAND)
STOP
END
SUBROUTINE FRAC_TO_MILLIS( FRAC, LFRAC)
CHARACTER *(*) FRAC
FRAC(LFRAC+1 :) = '000' !need zero-pad to milli-inches
N = INDEX( FRAC, '.')
IF( N .EQ. 0) THEN
LFRAC = LFRAC + 3
ELSE
FRAC(N:) = FRAC(N+1:) !squat decimal point
LFRAC = N + 2 !include decimal places
ENDIF
RETURN
END